<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>prc: Main Page</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.gif"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">prc
   </div>
   <div id="projectbrief">Xilinx SDK Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',false,false,'search.php','Search');
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('index.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">prc Documentation</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Xilinx PRC driver component provides management function for self-controlling partially reconfigurable designs.It is intended for enclosed systems where all of the Reconfigurable Modules are known to the controller. The optional AXI4-Lite register interface allows the core to be reconfigured at run time, so it can also be used in systems where the Reconfigurable Modules(RM) can change in the field.</p>
<p>The PRC supports the following features:</p><ul>
<li>32 Virtual Sockets.</li>
<li>128 Reconfigurable modules per Virtual Socket.</li>
<li>Optional hardware and software shutdown of Reconfigurable Modules (configurable per Reconfigurable Module).</li>
<li>Optional software start-up of Reconfigurable Modules (configurable per Reconfigurable Module).</li>
<li>Optional reset of Reconfigurable Modules after loading (configurable per Reconfigurable Module).</li>
<li>Virtual Socket Managers can be shutdown and restarted by the user to allow external controllers to partially reconfigure the device.</li>
<li>User control of Virtual Socket Manager output signals is supported in the shutdown state.</li>
</ul>
<p>The Partial Reconfiguration Controller consists of one or more Virtual Socket Managers(VSMs) which connect to a single fetch path. Virtual Socket Managers operate in parallel waiting for triggers to occur. When a trigger occurs, the appropriate VSM maps the trigger to an RM and manages the reconfiguration of that RM. VSM's queue for access to the fetch path.</p>
<p>VSMs exist in two States</p><ul>
<li>Active State</li>
<li>Shutdown State</li>
</ul>
<p><b>Initialization &amp; Configuration</b></p>
<p>The XPrc_Config structure is used by the driver to configure itself. This configuration structure is created based on HW build properties.</p>
<p>To support multiple runtime loading and initialization strategies employed by various operating systems, the driver instance can be initialized in the following way:</p>
<ul>
<li>XPrc_LookupConfig(DeviceId) - Use the device identifier to find the static configuration structure defined in xprc_g.c. This is setup by the tools. For some operating systems the config structure will be initialized by the software and this call is not needed.</li>
<li>XPrc_CfgInitialize(InstancePtr, CfgPtr, EffectiveAddr) is used for initialization. The user needs to first call the <a class="el" href="group__prc__v1__0.html#ga61ee29cca9dae9f18fb9a635f5c0a4b2" title="This function Looks for the device configuration based on the unique device ID. ">XPrc_LookupConfig()</a> API which returns the Configuration structure pointer which is passed as a parameter to the <a class="el" href="group__prc__v1__0.html#ga860a4c5ba01881e1547b8150affa7c0d" title="This function initializes a PRC instance. ">XPrc_CfgInitialize()</a> API.</li>
</ul>
<p><b> Threads </b></p>
<p>This driver is not thread safe. Any needs for threads or thread mutual exclusion must be satisfied by the layer above this driver.</p>
<p><b> Asserts </b></p>
<p>Asserts are used within all Xilinx drivers to enforce constraints on argument values. Asserts can be turned off on a system-wide basis by defining, at compile time, the NDEBUG identifier. By default, asserts are turned on and it is recommended that users leave asserts on during development.</p>
<p><b> Building the driver </b></p>
<p>The <a class="el" href="struct_x_prc.html" title="The XPrc instance data structure. ">XPrc</a> driver is composed of several source files. This allows the user to build and link only those parts of the driver that are necessary.</p>
<p><b> Debug prints </b></p>
<p><a class="el" href="struct_x_prc.html" title="The XPrc instance data structure. ">XPrc</a> driver is having debug prints.</p><ul>
<li>To get the debug print statements of the driver, please define XPRC_DEBUG as shown below. "#define XPRC_DEBUG"</li>
<li>To get the debug print statements of the core, please define XPRC_DEBUG_CORE as shown below. "#define XPRC_DEBUG_CORE"</li>
</ul>
<pre></pre><pre>MODIFICATION HISTORY:</pre><pre>Ver   Who      Date        Changes
<hr/>

1.0   ms     07/18/2016   First release
      ms     03/17/17     Added readme.txt file in examples folder for
                          doxygen generation.</pre><pre></pre> </div></div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Copyright &copy; 2015 Xilinx Inc. All rights reserved.</li>
  </ul>
</div>
</body>
</html>
